A certified compiler for an imperative language
نویسنده
چکیده
This paper describes the process of mechanically certifying a compiler with respect to the semantic speciication of the source and target languages. The proofs are performed in type theory using the Coq system. These proofs introduce speciic theoretical tools: fragmentation theorems and general induction principles. Un compilateur certiii pour un langage impratif RRsumm : Cet article ddcrit la vriication mmcanique de la ddmonstration de certiication d'un compilateur vis-vis des spciications ssmantiques du langage source et du langage cible. Ces vriications sont eeectuues dans le formalisme de la thhorie des types, l'aide du systtme Coq. Cette vriication permet d'introduire des outils thhoriques adaptts: thhorrmes de fragmentation et principe de rrcurrence ggnnral.
منابع مشابه
A Certified Extension of the Krivine Machine for a Call-by-Name Higher-Order Imperative Language
In this paper we present a compiler that translates programs from an imperative higher-order language into a sequence of instructions for an abstract machine. We consider an extension of the Krivine machine for the call-by-name lambda calculus, which includes strict operators and imperative features. We show that the compiler is correct with respect to the big-step semantics of our language, bo...
متن کاملCOGENT: Certified Compilation for a Functional Systems Language
We present a self-certifying compiler for the Cogent systems language. Cogent is a restricted, polymorphic, higher-order, and purely functional language with linear types and without the need for a trusted runtime or garbage collector. It compiles to efficient C code that is designed to interoperate with existing C functions. The language is suited for layered systems code with minimal sharing ...
متن کاملCertified Development Tools Implementation in Objective Caml
This paper presents our feedback from the study on the use of Objective Caml for safety-critical software development tools implementation. As a result, Objective Caml is now used for the new Scade certified embedded-code generator. The requirements for tools implementation are less strict than those for the embedded code itself. However, they are still quite demanding and linked to imperative ...
متن کاملFrom Relational Specifications to Logic Programs
This paper presents a compiler from expressive, relational specifications to logic programs. Specifically, the compiler translates the Imperative Alloy specification language to Prolog. Imperative Alloy is a declarative, relational specification language based on first-order logic and extended with imperative constructs; Alloy specifications are traditionally not executable. In spite of this th...
متن کاملFormalizing and Verifying Semantic Type Soundness of a Simple Compiler (Preliminary Report)
We describe a semantic type soundness result, formalized in the Coq proof assistant, for a compiler from a simple imperative language with heap-allocated data into an idealized assembly language. Types in the high-level language are interpreted as binary relations, built using both second-order quantification and a form of separation structure, over stores and code pointers in the low-level mac...
متن کامل